package entity

import (
	"gorm.io/gorm"
	"path/filepath"
	"server/application/db/schema/dbops"
	"time"
)

type SysMenu struct {
	ID          uint `gorm:"primarykey"`
	CreatedAt   time.Time
	UpdatedAt   time.Time
	DeletedAt   gorm.DeletedAt `gorm:"index"`
	Name        string         `gorm:"column:name;type:varchar(20);comment:菜单名称"`
	Path        string         `gorm:"column:path;type:varchar(50);comment:菜单路径"`
	Component   string         `gorm:"column:component;type:varchar(50);comment:vue组件名"`
	Permissions string         `gorm:"column:permissions;type:varchar(250);comment:按钮权限列表"`
	ParentId    uint           `gorm:"column:parent_id;comment:父级ID"`
	Sort        uint           `gorm:"column:sort;type:INT4;comment:排序"`
	//以下是元数据信息：
	Icon  string `gorm:"column:icon;type:varchar(20);comment:图标"`
	Title string `gorm:"column:title;type:varchar(255);comment:标题"`
	// 外链链接
	IsLink string `json:"isLink" gorm:"column:is_link;type:varchar(200);comment:是否链接"`
	// 是否隐藏
	IsHide bool `json:"isHide" gorm:"column:is_hide;comment:是否隐藏"`
	// 是否全屏
	IsFull bool `json:"isFull" gorm:"column:is_full;comment:是否全屏"`
	// 菜单是否固定（固定在 tagsView 中，不可进行关闭），右键菜单无 `关闭` 项
	IsAffix bool `json:"isAffix" gorm:"column:is_affix;comment:是否固定"`
	// 菜单是否缓存
	IsKeepAlive bool `json:"isKeepAlive" gorm:"column:is_keep_alive;comment:是否缓存"`
}

// GenConfig 生成相关配置
func (u SysMenu) GenConfig() dbops.EntityConfig {
	return dbops.EntityConfig{
		Title:              "菜单",
		AsName:             "",                      //实体别名，请使用大驼峰命名法
		ViewsFatherFolder:  filepath.Join("system"), //视图父目录
		OnlyGenBackendCode: true,                    //仅生成后台相关文件
	}
}
